#ifndef NV_NETWORK_H
#define NV_NETWORK_H
#include <QtNetwork>
#include <QtGui>
#include <QtCore>
#include <cryptopp/rsa.h>
#include <cryptopp/hex.h>
#include <cryptopp/hmac.h>

#include <iostream>
using namespace std;
using namespace CryptoPP;

//#define IP_client "172.17.2.9"
//#define IP_server "172.17.4.75"
//#define Port_server 23000

class nv_network : public QTcpServer
{
    Q_OBJECT
    Q_ENUMS(cmmds)

public:
// Variables
    int delay_server; // Variable que contiene el tiempo máximo(ms) que se espera una respuesta por parte del servidor
    QString msg_RX;
    QString msg_TX;

    enum cmmds {
        M1msg,
        M6msg,
        invalidM1,
        hearing,
        invalidID,
        wrongHash,
        invalidVote,
        voteSaved
        };

    QTcpSocket *client; // No va aqui, es de prueba

// Funciones
    nv_network();
    ~nv_network();

    bool connect2Server();

    bool read_msg(QString &msg);
    void send_msg(QString msg);
    QStringList show_interfaces();
    QString interface_IP(QString interface_name);


private:

// Variables
    //QTcpSocket *client;
    quint16 blockSize;


// Funciones
    bool Client_ID();
    void displayError(QAbstractSocket::SocketError socketError);

signals:
//    void load_user();

private slots:

};


#endif // NV_NETWORK_H
